﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Media;
using System.Collections.ObjectModel;
using System.Data;
using System.Windows.Media.Imaging;
using System.ComponentModel;
using System.Diagnostics;
using System.Windows.Controls;
using System.Globalization;
using produccion.modelo;
using produccion.AccesoDatos;
using produccion.clases;
using produccion.modulos;
using System.Windows.Input;
using System.Collections.Specialized;

namespace produccion.vistamodelo
{
    class VMReportarProcesosConcluidos : ViewModelBase, IDataErrorInfo
    {
        #region Campos
        private CLSMAECLIP _cliente = new CLSMAECLIP();
        private CLSMAEREF _referencia = new CLSMAEREF();
        private CLSENCORDP _encOrdenes = new CLSENCORDP();
        private CLSMAECOL _color = new CLSMAECOL();
        private CLSMAEEMPP _empleado = new CLSMAEEMPP();
        private CLSMAEEQU _equipo = new CLSMAEEQU();
        private CLSMAESEC _sec = new CLSMAESEC();

        private ProcesoProduccionRepositorio _repositorio = new ProcesoProduccionRepositorio();
        #endregion

        #region Constructor
        public VMReportarProcesosConcluidos()
            {
                try
                {
                    lisprocesos.CollectionChanged += OnCollectionChanged;
                    cargarOperarios();
                    if (MDOgeneral.conexion == null || MDOgeneral.conexion.State == ConnectionState.Closed)
                    {
                        MDOgeneral.conectar();
                    }
                    strTituloVentana = "Reporte de procesos concluidos - Usuario: " + MDOgeneral.usuario + " - [FRMReportarProcesosConcluidos]";

                    dtTallas.Columns.Add("strT1");
                    dtTallas.Columns.Add("strT2");
                    dtTallas.Columns.Add("strT3");
                    dtTallas.Columns.Add("strT4");
                    dtTallas.Columns.Add("strT5");
                    dtTallas.Columns.Add("strT6");
                    dtTallas.Columns.Add("strT7");
                    dtTallas.Columns.Add("strT8");
                    dtTallas.Columns.Add("strT9");
                    dtTallas.Columns.Add("strT10");
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }
        #endregion

        #region Propiedades
        
        private string _strTituloVentana;
        public string strTituloVentana
        {
            get { return _strTituloVentana; }
            set { _strTituloVentana = value; base.OnPropertyChanged("strTituloVentana"); }
        }

        private string _strOrden ;
        public string strOrden
        {
            get { return _strOrden; }
            set 
            { 
                _strOrden = value; 
                base.OnPropertyChanged("strOrden");
                buscarOrden();
            }
        }

        private DateTime _dtmFechaOrden;
        public DateTime dtmFechaOrden
        {
            get { return _dtmFechaOrden; }
            set { _dtmFechaOrden = value; base.OnPropertyChanged("dtmFechaOrden"); }
        }

        private string _strCodigoCliente;
        public string strCodigoCliente
        {
            get { return _strCodigoCliente; }
            set { _strCodigoCliente = value; base.OnPropertyChanged("strCodigoCliente"); }
        }

        private string _strNombreCliente;
        public string strNombreCliente
        {
            get { return _strNombreCliente; }
            set { _strNombreCliente = value; base.OnPropertyChanged("strNombreCliente"); }
        }

        private string _strCodigoSubCliente;
        public string strCodigoSubCliente
        {
            get { return _strCodigoSubCliente; }
            set { _strCodigoSubCliente = value; base.OnPropertyChanged("strCodigoSubCliente"); }
        }

        private string _strNombreSubCliente;
        public string strNombreSubCliente
        {
            get { return _strNombreSubCliente; }
            set { _strNombreSubCliente = value; base.OnPropertyChanged("strNombreSubCliente"); }
        }

        private Int32 _numPedido;
        public Int32 numPedido
        {
            get { return _numPedido; }
            set { _numPedido = value; base.OnPropertyChanged("numPedido"); }
        }
        
        private string _strReferencia ;
        public string strReferencia
        {
            get { return _strReferencia; }
            set { _strReferencia = value; base.OnPropertyChanged("strReferencia"); }
        }

        private string _strNombreReferencia;
        public string strNombreReferencia
        {
            get { return _strNombreReferencia; }
            set { _strNombreReferencia = value; base.OnPropertyChanged("strNombreReferencia"); }
        }

        private string _strColor;
        public string strColor
        {
            get { return _strColor; }
            set { _strColor = value; base.OnPropertyChanged("strColor"); }
        }

        private string _strNombreColor;
        public string strNombreColor
        {
            get { return _strNombreColor; }
            set { _strNombreColor = value; base.OnPropertyChanged("strNombreColor"); }
        }

        private string _strOperario;
        public string strOperario
        {
            get { return _strOperario; }
            set 
            { 
                _strOperario = value; 
                base.OnPropertyChanged("strOperario");
                buscaEmpleado();
            }
        }

        private string _strNombreOperario;
        public string strNombreOperario
        {
            get { return _strNombreOperario; }
            set { _strNombreOperario = value; base.OnPropertyChanged("strNombreOperario"); }
        }

        private DateTime _dtmFecha = DateTime.Now;
        public DateTime dtmFecha
        {
            get { return _dtmFecha; }
            set { _dtmFecha = value; base.OnPropertyChanged("dtmFecha"); }
        }

        private string _strNombreProceso;
        public string strNombreProceso
        {
            get { return _strNombreProceso; }
            set { _strNombreProceso = value; base.OnPropertyChanged("strNombreProceso"); }
        }

        private ObservableCollection<VMProcesosConcluidos> _lisprocesos = new ObservableCollection<VMProcesosConcluidos>();
        public ObservableCollection<VMProcesosConcluidos> lisprocesos
        {
            get { return _lisprocesos; }
            set { _lisprocesos = value; base.OnPropertyChanged("lisprocesos"); }
        }

        private VMProcesosConcluidos _selproceso;
        public VMProcesosConcluidos selproceso
        {
            get { return _selproceso; }
            set {  _selproceso = value;  base.OnPropertyChanged("selproceso"); }
        }

        private Boolean _logValido = true;
        public Boolean logValido
        {
            get { return _logValido; }
            set { _logValido = value; base.OnPropertyChanged("logValido"); }
        }

        private DataTable _dtTallas = new DataTable();
        public DataTable dtTallas
        {
            get { return _dtTallas; }
            set { _dtTallas = value; base.OnPropertyChanged("dtTallas"); }
        }

        private VMvisorFotoReferencia _visorFotoReferencia = new VMvisorFotoReferencia();
        public VMvisorFotoReferencia visorFotoReferencia
        {
            get { return _visorFotoReferencia; }
            set { _visorFotoReferencia = value; base.OnPropertyChanged("visorFotoReferencia"); }
        }

        private VMbuscarGeneral _buscarEmpleado;
        public VMbuscarGeneral buscarEmpleado
        {
            get { return _buscarEmpleado; }
            set { _buscarEmpleado = value; base.OnPropertyChanged("buscarEmpleado"); }
        }

        private Int32 _numTotales;
        public Int32 numTotales
        {
            get { return _numTotales; }
            set { _numTotales = value; base.OnPropertyChanged("numTotales"); }
        }

        #endregion

        #region Comandos
        
        RelayCommand _cmdSalir;
        public ICommand cmdSalir
        {
            get
            {
                if (_cmdSalir == null)
                {
                    _cmdSalir = new RelayCommand(Salir);
                }
                return _cmdSalir;
            }
        }

        RelayCommand _cmdBuscarEmpleado;
        public ICommand cmdBuscarEmpleado
        {
            get
            {
                if (_cmdBuscarEmpleado == null)
                {
                    _cmdBuscarEmpleado = new RelayCommand(r => buscarOperario());
                }
                return _cmdBuscarEmpleado;
            }
        }

        RelayCommand _cmGrabar;
        public ICommand cmdGrabar
        {
            get
            {
                if (_cmGrabar == null)
                {
                    _cmGrabar = new RelayCommand(r => grabar());
                }
                return _cmGrabar;
            }
        }

        #endregion

        #region Metodos

        void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            try
            {
                if (e.NewItems != null && e.NewItems.Count > 0)
                {
                    foreach (VMProcesosConcluidos pro in e.NewItems)
                    {
                        pro.PropertyChanged += OnPropertyChanged;
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            logValido = ((from pro in lisprocesos where pro.IsValid.Equals(false) select pro.IsValid).ToList().Count()) > 0 ? true : false;

            strNombreProceso = null;

            foreach (var item in lisprocesos.Where(w => w.numConsecutivo != selproceso.numConsecutivo && w.logReportar.Equals(true)))
            {
                item.logReportar = false;
            }

            numTotales = 0;

            foreach (var item in lisprocesos.Where(w => w.numConsecutivo == selproceso.numConsecutivo && w.logReportar.Equals(true)))
            {
                if (item.strT1.Trim().Length > 0)
                    numTotales = numTotales + Convert.ToInt32(item.strT1);
                if (item.strT2.Trim().Length > 0)
                    numTotales = numTotales + Convert.ToInt32(item.strT2);
                if (item.strT3.Trim().Length > 0)
                    numTotales = numTotales + Convert.ToInt32(item.strT3);
                if (item.strT4.Trim().Length > 0)
                    numTotales = numTotales + Convert.ToInt32(item.strT4);
                if (item.strT5.Trim().Length > 0)
                    numTotales = numTotales + Convert.ToInt32(item.strT5);
                if (item.strT6.Trim().Length > 0)
                    numTotales = numTotales + Convert.ToInt32(item.strT6);
                if (item.strT7.Trim().Length > 0)
                    numTotales = numTotales + Convert.ToInt32(item.strT7);
                if (item.strT8.Trim().Length > 0)
                    numTotales = numTotales + Convert.ToInt32(item.strT8);
                if (item.strT9.Trim().Length > 0)
                    numTotales = numTotales + Convert.ToInt32(item.strT9);
                if (item.strT10.Trim().Length > 0)
                    numTotales = numTotales + Convert.ToInt32(item.strT10);

                strNombreProceso = item.strLinea.ToString().Trim() + " = " + Convert.ToString(numTotales);
            }

            if (numTotales > 0)
                logValido = false;
        }

        public void cargarOperarios()
        {
            try
            {
                List<clases.CLSMAEEMPP> lisEmpleados = new clases.CLSMAEEMPP().listaEmpleados();
                _buscarEmpleado = new VMbuscarGeneral((from emp in lisEmpleados
                                                       select new VMlistaGenerica { strColumna1 = emp.CODEMP_EMP, strColumna2 = emp.NOMEMP_EMP, strColumna3 = emp.CEDEMP_EMP }).ToList());
                buscarEmpleado.PropertyChanged += onBuscarEmpleadoPropertyChanged;
                buscarEmpleado.gridBuscar.columna1.strNombre = "Código";
                buscarEmpleado.gridBuscar.columna2.strNombre = "Nombre";
                buscarEmpleado.gridBuscar.columna3.strNombre = "Cedula";

            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        void onBuscarEmpleadoPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            if (e.PropertyName == "IsOpen")
            {
                if (!buscarEmpleado.IsOpen)
                {
                    if (buscarEmpleado.gridBuscar.selLista != null)
                    {
                        strOperario = buscarEmpleado.gridBuscar.selLista.strColumna1;
                        strNombreOperario = buscarEmpleado.gridBuscar.selLista.strColumna2;
                    }
                }
            }
        }

        public void buscarOperario()
        {
            try
            {
                buscarEmpleado.IsOpen = true;
            }
            catch (Exception ex) { throw ex; }
        }

        public void buscaEmpleado()
        {
            try
            {
               if (strOperario != null)
               {
                    if (strOperario.Length==5)
                    {
                        _empleado.CODEMP_EMP = strOperario;
                        _empleado.consultar();
                        if (_empleado.EXISTE)
                        {
                            strNombreOperario = _empleado.NOMEMP_EMP;
                        }
                        else
                        {
                            _equipo.CODEQU_EQU = strOperario;
                            _equipo.consultar();
                            if (_equipo.EXISTE)
                                strNombreOperario = _equipo.CODEQU_EQU;
                            else
                            {
                                strNombreOperario = "Operario no existe.";
                                strOperario = "";
                            }
                        }
                    }
               }
            }
            catch (Exception ex) { throw ex; }
        }

        public void buscarOrden()
        {
            try
            {
                if (strOrden != null)
                {
                    if (strOrden.Length >= 6)
                    {
                        _encOrdenes.NROORD_EOP = strOrden;
                        _encOrdenes.consultar();
                        if (_encOrdenes.EXISTE)
                        {
                            strCodigoCliente = _encOrdenes.CODCLI_EOP;
                            strCodigoSubCliente = _encOrdenes.CODCLI_EOP;
                            numPedido = _encOrdenes.NROPED_EOP;
                            strReferencia = _encOrdenes.CODREF_EOP;
                            strColor = _encOrdenes.CODCOL_EOP;
                            dtmFechaOrden = _encOrdenes.FECORD_EOP;

                            _referencia.CODREF_REF = strReferencia;
                            _referencia.Consultar();
                            strNombreReferencia = _referencia.NOMREF_REF;

                            _color.CODCOL_COL = strColor;
                            _color.Consultar();
                            strNombreColor = _color.NOMCOL_COL;

                            _cliente.CODCLI_CLI = strCodigoCliente;
                            _cliente.consultar();
                            strNombreCliente = _cliente.NOMCLI_CLI;
                            strNombreSubCliente = _cliente.NOMCLI_CLI;
                            visorFotoReferencia.strCodigo = strReferencia;
                            visorFotoReferencia.strColor = strColor;

                            strOperario = "DIG01";
                            numTotales = 0;

                            llenarTalla();

                            if (numTotales > 0)
                                logValido = false;
                        }
                        else
                        {
                            limpiar();
                            MessageBox.Show("Orden de producción no existe.","Inconstencia",MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
                        }
                    }
                    else
                        limpiar();
                }
            }
            catch (Exception ex) { throw ex; }
        }

        public void llenarTalla()
        {
            try
            {
                MDOgeneral mod = new MDOgeneral();

                MDOgeneral.spComando.CommandText = "SP_PASOSECC";
                MDOgeneral.spComando.Connection = MDOgeneral.conexion;
                MDOgeneral.spComando.CommandType = CommandType.StoredProcedure;
                MDOgeneral.spComando.Parameters.Clear();

                //Input
                MDOgeneral.spComando.Parameters.Add("pva_nroord", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = strOrden;
                MDOgeneral.spComando.Parameters["pva_nroord"].Direction = ParameterDirection.Input;

                //Output
                MDOgeneral.spComando.Parameters.Add("pva_result", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                MDOgeneral.spComando.Parameters.Add("pva_errusu", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                MDOgeneral.spComando.ExecuteNonQuery();
                string c = MDOgeneral.spComando.Parameters["pva_result"].Value.ToString();

                DataTable dt = new DataTable();
                dt = mod.consulta("select * from tmppasosecc");

                Boolean logControl = false;

                List<MProcesosConcluidos.procesosConcluidos> lista = new List<MProcesosConcluidos.procesosConcluidos>();
                MProcesosConcluidos.procesosConcluidos objPC = new MProcesosConcluidos.procesosConcluidos();
                
                foreach (DataRow dr in dt.Rows)
                {
                    if (dr["LINEA_TMP"].ToString().Trim() == "Tallas")
                    {
                        dtTallas.Clear();
                        DataRow drt = dtTallas.NewRow();
                        drt["strT1"] = dr["T1_TMP"].ToString();
                        drt["strT2"] = dr["T2_TMP"].ToString();
                        drt["strT3"] = dr["T3_TMP"].ToString();
                        drt["strT4"] = dr["T4_TMP"].ToString();
                        drt["strT5"] = dr["T5_TMP"].ToString();
                        drt["strT6"] = dr["T6_TMP"].ToString();
                        drt["strT7"] = dr["T7_TMP"].ToString();
                        drt["strT8"] = dr["T8_TMP"].ToString();
                        drt["strT9"] = dr["T9_TMP"].ToString();
                        drt["strT10"] = dr["T10_TMP"].ToString();
                        dtTallas.Rows.Add(drt);
                    }
                    else
                    {
                        objPC = new MProcesosConcluidos.procesosConcluidos();

                        objPC.logReportar = false;
                        objPC.numConsecutivo = Convert.ToInt32(dr["CONSEC_TMP"]);
                        objPC.strLinea = dr["LINEA_TMP"].ToString();
                        objPC.strT1 = dr["T1_TMP"].ToString();
                        objPC.strT2 = dr["T2_TMP"].ToString();
                        objPC.strT3 = dr["T3_TMP"].ToString();
                        objPC.strT4 = dr["T4_TMP"].ToString();
                        objPC.strT5 = dr["T5_TMP"].ToString();
                        objPC.strT6 = dr["T6_TMP"].ToString();
                        objPC.strT7 = dr["T7_TMP"].ToString();
                        objPC.strT8 = dr["T8_TMP"].ToString();
                        objPC.strT9 = dr["T9_TMP"].ToString();
                        objPC.strT10 = dr["T10_TMP"].ToString();
                        objPC.strDigita = dr["DIGITA_TMP"].ToString();
                        objPC.strT1A = dr["T1A_TMP"].ToString();
                        objPC.strT2A = dr["T2A_TMP"].ToString();
                        objPC.strT3A = dr["T3A_TMP"].ToString();
                        objPC.strT4A = dr["T4A_TMP"].ToString();
                        objPC.strT5A = dr["T5A_TMP"].ToString();
                        objPC.strT6A = dr["T6A_TMP"].ToString();
                        objPC.strT7A = dr["T7A_TMP"].ToString();
                        objPC.strT8A = dr["T8A_TMP"].ToString();
                        objPC.strT9A = dr["T9A_TMP"].ToString();
                        objPC.strT10A = dr["T10A_TMP"].ToString();
                        objPC.logT1 = dr["T1_TMP"].ToString() == dr["T1A_TMP"].ToString() && dr["T1A_TMP"].ToString().Trim() != "0" && dr["T1A_TMP"].ToString().Trim().Length > 0 ? true : false;
                        objPC.logT2 = dr["T2_TMP"].ToString() == dr["T2A_TMP"].ToString() && dr["T2A_TMP"].ToString().Trim() != "0" && dr["T2A_TMP"].ToString().Trim().Length > 0 ? true : false;
                        objPC.logT3 = dr["T3_TMP"].ToString() == dr["T3A_TMP"].ToString() && dr["T3A_TMP"].ToString().Trim() != "0" && dr["T3A_TMP"].ToString().Trim().Length > 0 ? true : false;
                        objPC.logT4 = dr["T4_TMP"].ToString() == dr["T4A_TMP"].ToString() && dr["T4A_TMP"].ToString().Trim() != "0" && dr["T4A_TMP"].ToString().Trim().Length > 0 ? true : false;
                        objPC.logT5 = dr["T5_TMP"].ToString() == dr["T5A_TMP"].ToString() && dr["T5A_TMP"].ToString().Trim() != "0" && dr["T5A_TMP"].ToString().Trim().Length > 0 ? true : false;
                        objPC.logT6 = dr["T6_TMP"].ToString() == dr["T6A_TMP"].ToString() && dr["T6A_TMP"].ToString().Trim() != "0" && dr["T6A_TMP"].ToString().Trim().Length > 0 ? true : false;
                        objPC.logT7 = dr["T7_TMP"].ToString() == dr["T7A_TMP"].ToString() && dr["T7A_TMP"].ToString().Trim() != "0" && dr["T7A_TMP"].ToString().Trim().Length > 0 ? true : false;
                        objPC.logT8 = dr["T8_TMP"].ToString() == dr["T8A_TMP"].ToString() && dr["T8A_TMP"].ToString().Trim() != "0" && dr["T8A_TMP"].ToString().Trim().Length > 0 ? true : false;
                        objPC.logT9 = dr["T9_TMP"].ToString() == dr["T9A_TMP"].ToString() && dr["T9A_TMP"].ToString().Trim() != "0" && dr["T9A_TMP"].ToString().Trim().Length > 0 ? true : false;
                        objPC.logT10 = dr["T10_TMP"].ToString() == dr["T10A_TMP"].ToString() && dr["T10A_TMP"].ToString().Trim() != "0" && dr["T10A_TMP"].ToString().Trim().Length > 0 ? true : false;

                        if (dr["LINEA_TMP"].ToString() == "Programacion" || dr["LINEA_TMP"].ToString() == "Corte" || dr["LINEA_TMP"].ToString() == "Preparacion")
                        {
                            objPC.logT1A = false;
                            objPC.logT2A = false;
                            objPC.logT3A = false;
                            objPC.logT4A = false;
                            objPC.logT5A = false;
                            objPC.logT6A = false;
                            objPC.logT7A = false;
                            objPC.logT8A = false;
                            objPC.logT9A = false;
                            objPC.logT10A = false;
                        }
                        else
                        {
                            objPC.logT1A = dr["T1_TMP"].ToString() == dr["T1A_TMP"].ToString() && dr["T1A_TMP"].ToString().Trim() != "0" && dr["T1A_TMP"].ToString().Trim().Length > 0 ? true : false;
                            objPC.logT2A = dr["T2_TMP"].ToString() == dr["T2A_TMP"].ToString() && dr["T2A_TMP"].ToString().Trim() != "0" && dr["T2A_TMP"].ToString().Trim().Length > 0 ? true : false;
                            objPC.logT3A = dr["T3_TMP"].ToString() == dr["T3A_TMP"].ToString() && dr["T3A_TMP"].ToString().Trim() != "0" && dr["T3A_TMP"].ToString().Trim().Length > 0 ? true : false;
                            objPC.logT4A = dr["T4_TMP"].ToString() == dr["T4A_TMP"].ToString() && dr["T4A_TMP"].ToString().Trim() != "0" && dr["T4A_TMP"].ToString().Trim().Length > 0 ? true : false;
                            objPC.logT5A = dr["T5_TMP"].ToString() == dr["T5A_TMP"].ToString() && dr["T5A_TMP"].ToString().Trim() != "0" && dr["T5A_TMP"].ToString().Trim().Length > 0 ? true : false;
                            objPC.logT6A = dr["T6_TMP"].ToString() == dr["T6A_TMP"].ToString() && dr["T6A_TMP"].ToString().Trim() != "0" && dr["T6A_TMP"].ToString().Trim().Length > 0 ? true : false;
                            objPC.logT7A = dr["T7_TMP"].ToString() == dr["T7A_TMP"].ToString() && dr["T7A_TMP"].ToString().Trim() != "0" && dr["T7A_TMP"].ToString().Trim().Length > 0 ? true : false;
                            objPC.logT8A = dr["T8_TMP"].ToString() == dr["T8A_TMP"].ToString() && dr["T8A_TMP"].ToString().Trim() != "0" && dr["T8A_TMP"].ToString().Trim().Length > 0 ? true : false;
                            objPC.logT9A = dr["T9_TMP"].ToString() == dr["T9A_TMP"].ToString() && dr["T9A_TMP"].ToString().Trim() != "0" && dr["T9A_TMP"].ToString().Trim().Length > 0 ? true : false;
                            objPC.logT10A = dr["T10_TMP"].ToString() == dr["T10A_TMP"].ToString() && dr["T10A_TMP"].ToString().Trim() != "0" && dr["T10A_TMP"].ToString().Trim().Length > 0 ? true : false;
                        }
                        if (dr["DIGITA_TMP"].ToString().Trim() == "1" && logControl==false)
                        {
                            objPC.logReportar = true;
                            logControl = true;

                            if (dr["T1_TMP"].ToString().Trim().Length > 0)
                                numTotales = numTotales + Convert.ToInt32(dr["T1_TMP"]);
                            if (dr["T2_TMP"].ToString().Trim().Length > 0)
                                numTotales = numTotales + Convert.ToInt32(dr["T2_TMP"]);
                            if (dr["T3_TMP"].ToString().Trim().Length > 0)
                                numTotales = numTotales + Convert.ToInt32(dr["T3_TMP"]);
                            if (dr["T4_TMP"].ToString().Trim().Length > 0)
                                numTotales = numTotales + Convert.ToInt32(dr["T4_TMP"]);
                            if (dr["T5_TMP"].ToString().Trim().Length > 0)
                                numTotales = numTotales + Convert.ToInt32(dr["T5_TMP"]);
                            if (dr["T6_TMP"].ToString().Trim().Length > 0)
                                numTotales = numTotales + Convert.ToInt32(dr["T6_TMP"]);
                            if (dr["T7_TMP"].ToString().Trim().Length > 0)
                                numTotales = numTotales + Convert.ToInt32(dr["T7_TMP"]);
                            if (dr["T8_TMP"].ToString().Trim().Length > 0)
                                numTotales = numTotales + Convert.ToInt32(dr["T8_TMP"]);
                            if (dr["T9_TMP"].ToString().Trim().Length > 0)
                                numTotales = numTotales + Convert.ToInt32(dr["T9_TMP"]);
                            if (dr["T10_TMP"].ToString().Trim().Length > 0)
                                numTotales = numTotales + Convert.ToInt32(dr["T10_TMP"]);

                            strNombreProceso = dr["LINEA_TMP"].ToString().Trim() + " = " + Convert.ToString(numTotales);

                            // Se consulta en la tabla secciones si hay secciones bloqueadas para que no se reporten en este formulario
                            if (dr["LINEA_TMP"].ToString() == "Despachos")
                            {
                                _sec.CODSEC_SEC = "D";
                                _sec.Consultar();
                                if (_sec.EXISTE && _sec.REPMAN_SEC == "N")
                                {
                                    objPC.logReportar = false;
                                    objPC.strDigita = "0";
                                    numTotales = 0;
                                    strNombreProceso = dr["LINEA_TMP"].ToString().Trim() + " = 0 ";
                                }
                            }

                            if (dr["LINEA_TMP"].ToString() == "Montaje")
                            {
                                _sec.CODSEC_SEC = "M";
                                _sec.Consultar();
                                if (_sec.EXISTE && _sec.REPMAN_SEC == "N")
                                {
                                    objPC.logReportar = false;
                                    objPC.strDigita = "0";
                                    numTotales = 0;
                                    strNombreProceso = dr["LINEA_TMP"].ToString().Trim() + " = 0 ";
                                }
                            }
                        }

                        lista.Add(objPC);

                        if (numTotales > 0)
                            logValido = false;
                    }
                }

                int numI = 0;
                List<VMProcesosConcluidos> all = (from lis in lista select new VMProcesosConcluidos(lis)).ToList();
                foreach (VMProcesosConcluidos pc in all)
                {
                    pc.validarProceso += validaProcesos;
                    pc.PropertyChanged += OnPropertyChanged; 
                    numI = numI + 1;
                }
                lisprocesos.Clear();
                lisprocesos = new ObservableCollection<VMProcesosConcluidos>(all);
                lisprocesos.CollectionChanged += OnCollectionChanged;

            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        public string validaProcesos(string strLinea)
        {
            try
            {
                int i = (from pro in lisprocesos where pro.strLinea.Trim().Equals(strLinea.Trim()) select pro).ToList().Count();
                if (i > 1)
                {
                    return "Proceso a reportar no se puede reportar dos veces.";
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return null;
        }

        void limpiar()
        {
            try
            {
                strCodigoCliente = null;
                strNombreCliente = null;
                strCodigoSubCliente = null;
                strNombreSubCliente = null;
                strReferencia = null;
                strNombreReferencia = null;
                strColor = null;
                strNombreColor = null;
                numPedido = 0;
                strOperario = null;
                strNombreOperario = null;
                if (visorFotoReferencia != null)
                {
                    if (visorFotoReferencia.strCodigo != null)
                        visorFotoReferencia.strCodigo = "";
                }
                //dtmFecha = DateTime.Now;
                dtmFechaOrden = DateTime.Now;
                lisprocesos.Clear();
                strNombreProceso = null;
                logValido = true;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        public void grabar()
        {
            try
            {
                string strSeccion = "";
                string strCantidades = "";
                string strTallas = "";

                if (strOrden != null)
                {
                    if (String.IsNullOrEmpty(strOrden) || strOrden.Length < 6)
                    {
                        MessageBox.Show("No ha ingresado ninguna orden para reportar", "Inconsistencia", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
                        return;
                    }
                }
                else
                {
                    MessageBox.Show("No ha ingresado ninguna orden para reportar", "Inconsistencia", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
                    return;
                }

                if (MessageBox.Show("Estas seguro de guardar el proceso concluido", "Confirmación", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)//FJRF - Preguntamos si el usuario quiere guardar el proceso
                {
                    List<VMProcesosConcluidos> all = (from lis in lisprocesos where lis.logReportar.Equals(true) select lis).ToList();
                    foreach (VMProcesosConcluidos pc in all)
                    {
                        if (pc.strLinea.ToString().Trim() == "Programacion")
                            strSeccion = "PRG";
                        if (pc.strLinea.ToString().Trim() == "Corte")
                            strSeccion = "COR";
                        if (pc.strLinea.ToString().Trim() == "Preparacion")
                            strSeccion = "PRP";
                        if (pc.strLinea.ToString().Trim() == "Guarnecida")
                            strSeccion = "GUA";
                        if (pc.strLinea == "Montaje")
                            strSeccion = "MON";
                        if (pc.strLinea.ToString().Trim() == "Despachos")
                            strSeccion = "DES";

                        if (pc.logT1 == true)
                            strCantidades = strCantidades + pc.strT1.ToString().PadLeft(2, '0') + "-";
                        if (pc.logT2 == true)
                            strCantidades = strCantidades + pc.strT2.ToString().PadLeft(2, '0') + "-";
                        if (pc.logT3 == true)
                            strCantidades = strCantidades + pc.strT3.ToString().PadLeft(2, '0') + "-";
                        if (pc.logT4 == true)
                            strCantidades = strCantidades + pc.strT4.ToString().PadLeft(2, '0') + "-";
                        if (pc.logT5 == true)
                            strCantidades = strCantidades + pc.strT5.ToString().PadLeft(2, '0') + "-";
                        if (pc.logT6 == true)
                            strCantidades = strCantidades + pc.strT6.ToString().PadLeft(2, '0') + "-";
                        if (pc.logT7 == true)
                            strCantidades = strCantidades + pc.strT7.ToString().PadLeft(2, '0') + "-";
                        if (pc.logT8 == true)
                            strCantidades = strCantidades + pc.strT8.ToString().PadLeft(2, '0') + "-";
                        if (pc.logT9 == true)
                            strCantidades = strCantidades + pc.strT9.ToString().PadLeft(2, '0') + "-";
                        if (pc.logT10 == true)
                            strCantidades = strCantidades + pc.strT10.ToString().PadLeft(2, '0') + "-";

                        foreach (DataRow dr in dtTallas.Rows)
                        {
                            if (pc.logT1 == true)
                                strTallas = strTallas + dr[0].ToString().Trim().PadRight(2, ' ') + "-";
                            if (pc.logT2 == true)
                                strTallas = strTallas + dr[1].ToString().Trim().PadRight(2, ' ') + "-";
                            if (pc.logT3 == true)
                                strTallas = strTallas + dr[2].ToString().Trim().PadRight(2, ' ') + "-";
                            if (pc.logT4 == true)
                                strTallas = strTallas + dr[3].ToString().Trim().PadRight(2, ' ') + "-";
                            if (pc.logT5 == true)
                                strTallas = strTallas + dr[4].ToString().Trim().PadRight(2, ' ') + "-";
                            if (pc.logT6 == true)
                                strTallas = strTallas + dr[5].ToString().Trim().PadRight(2, ' ') + "-";
                            if (pc.logT7 == true)
                                strTallas = strTallas + dr[6].ToString().Trim().PadRight(2, ' ') + "-";
                            if (pc.logT8 == true)
                                strTallas = strTallas + dr[7].ToString().Trim().PadRight(2, ' ') + "-";
                            if (pc.logT9 == true)
                                strTallas = strTallas + dr[8].ToString().Trim().PadRight(2, ' ') + "-";
                            if (pc.logT10 == true)
                                strTallas = strTallas + dr[9].ToString().Trim().PadRight(2, ' ') + "-";
                        }
                    }

                    if (String.IsNullOrEmpty(strTallas))
                    {
                        MessageBox.Show("No ha seleccionado ninguna sección para reportar", "Inconsistencia", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
                        return;
                    }

                    if (strOperario != null)
                    {
                        if (String.IsNullOrEmpty(strOperario))
                        {
                            MessageBox.Show("No ha ingresado ningun operario para reportar", "Inconsistencia", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
                            return;
                        }
                    }
                    else
                    {
                        MessageBox.Show("No ha ingresado ningun operario para reportar", "Inconsistencia", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
                        return;
                    }

                    MDOgeneral mod = new MDOgeneral();

                    MDOgeneral.spComando.CommandText = "SP_GRABARPASOSECC";
                    MDOgeneral.spComando.Connection = MDOgeneral.conexion;
                    MDOgeneral.spComando.CommandType = CommandType.StoredProcedure;
                    MDOgeneral.spComando.Parameters.Clear();

                    //Input
                    MDOgeneral.spComando.Parameters.Add("pva_nroord", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = strOrden;
                    MDOgeneral.spComando.Parameters["pva_nroord"].Direction = ParameterDirection.Input;

                    MDOgeneral.spComando.Parameters.Add("pva_seccion", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = strSeccion;
                    MDOgeneral.spComando.Parameters["pva_seccion"].Direction = ParameterDirection.Input;

                    MDOgeneral.spComando.Parameters.Add("pva_tallas", Oracle.DataAccess.Client.OracleDbType.Varchar2, 200).Value = strTallas;
                    MDOgeneral.spComando.Parameters["pva_tallas"].Direction = ParameterDirection.Input;

                    MDOgeneral.spComando.Parameters.Add("pva_cantid", Oracle.DataAccess.Client.OracleDbType.Varchar2, 200).Value = strCantidades;
                    MDOgeneral.spComando.Parameters["pva_cantid"].Direction = ParameterDirection.Input;

                    MDOgeneral.spComando.Parameters.Add("pva_codope", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = strOperario;
                    MDOgeneral.spComando.Parameters["pva_codope"].Direction = ParameterDirection.Input;

                    MDOgeneral.spComando.Parameters.Add("pdd_fecha", Oracle.DataAccess.Client.OracleDbType.Date).Value = dtmFecha.Date;
                    MDOgeneral.spComando.Parameters["pdd_fecha"].Direction = ParameterDirection.Input;

                    //Output
                    MDOgeneral.spComando.Parameters.Add("pva_result", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                    MDOgeneral.spComando.Parameters.Add("pva_errusu", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                    MDOgeneral.spComando.ExecuteNonQuery();
                    string c = MDOgeneral.spComando.Parameters["pva_result"].Value.ToString();

                    strOperario = null;
                    strNombreOperario = null;

                    //llenarTalla();
                    limpiar();
                    strOrden = "";
                }
                else//FJRF - Si el usuario no esta seguro de guardar hacemos lo siguiente
                {
                    MessageBox.Show("No se guardo el proceso", "PROCESO CANCELADO", MessageBoxButton.OK,MessageBoxImage.Stop);//FJRF - Enviamos un mensaje al usuario informando que no se guardo el dato
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        public void Salir(Object frmformulario)
        {
            ((Window)frmformulario).Close();
        }
        #endregion

        #region IDataErrorInfo Members

        string IDataErrorInfo.Error { get { return null; } }

        string IDataErrorInfo.this[string propertyName]
        {
            get { return this.GetValidationError(propertyName); }
        }

        #endregion

        #region Validation

        /// <summary>
        /// Returns true if this object has no validation errors.
        /// </summary>
        /// 

        public bool IsValid
        {
            get
            {
                foreach (string property in ValidatedProperties)
                    if (GetValidationError(property) != null)
                        return false;

                return true;
            }
        }

        static readonly string[] ValidatedProperties = 
                    { 
                        "strOrden",
                        "strOperario"
                    };

        string GetValidationError(string propertyName)
        {
            string error = null;

            if (Array.IndexOf(ValidatedProperties, propertyName) < 0)
                return null;

            //&& CODCPT_NVP.Length==3
            switch (propertyName)
            {
                case "strOrden":
                    error = this.ValidateOrden();
                    break;
                case "strOperario":
                    error = this.ValidateOperario();
                    break;
                default:
                    Debug.Fail("Unexpected property being validated on Customer: " + propertyName);
                    break;
            }
            return error;
        }

        string ValidateOrden()
        {
            try
            {
                if (strOrden != null)
                {
                    if (strOrden.Length < 6)
                        return "Orden no existe o invalida.";
                }
                else
                    return "Debe ingresar un numero de orden.";
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return null;
        }

        string ValidateOperario()
        {
            try
            {
                if (strOperario != null)
                {
                    if (strOperario.Length != 5)
                        return "El operario no existe.";
                }
                else
                    return "Debe ingresar un operario.";
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return null;
        }

        #endregion
    }


    #region Vista-modelo
    public class VMProcesosConcluidos : ViewModelBase, IDataErrorInfo
    {
        #region Campos
        private MProcesosConcluidos.procesosConcluidos _procesos = new MProcesosConcluidos.procesosConcluidos();
        #endregion

        #region Constructor

        public VMProcesosConcluidos(MProcesosConcluidos.procesosConcluidos procesos)
        {
            _procesos = procesos;
        }

        public VMProcesosConcluidos()
        {
            base.OnPropertyChanged("strLinea");
        }

        #endregion

        #region Propiedades

        public ValidarProceso validarProceso;

        public Boolean logReportar
        {
            get { return _procesos.logReportar; }
            set { _procesos.logReportar = value; base.OnPropertyChanged("logReportar"); }
        }

        public Int32 numConsecutivo
        {
            get { return _procesos.numConsecutivo; }
            set { _procesos.numConsecutivo = value; base.OnPropertyChanged("numConsecutivo"); }
        }

        public string strLinea
        {
            get { return _procesos.strLinea; }
            set { _procesos.strLinea = value; base.OnPropertyChanged("strLinea"); }
        }

        public string strT1
        {
            get { return _procesos.strT1; }
            set { _procesos.strT1 = value; base.OnPropertyChanged("strT1"); }
        }

        public string strT2
        {
            get { return _procesos.strT2; }
            set { _procesos.strT2 = value; base.OnPropertyChanged("strT2"); }
        }

        public string strT3
        {
            get { return _procesos.strT3; }
            set { _procesos.strT3 = value; base.OnPropertyChanged("strT3"); }
        }

        public string strT4
        {
            get { return _procesos.strT4; }
            set { _procesos.strT4 = value; base.OnPropertyChanged("strT4"); }
        }

        public string strT5
        {
            get { return _procesos.strT5; }
            set { _procesos.strT5 = value; base.OnPropertyChanged("strT5"); }
        }

        public string strT6
        {
            get { return _procesos.strT6; }
            set { _procesos.strT6 = value; base.OnPropertyChanged("strT6"); }
        }

        public string strT7
        {
            get { return _procesos.strT7; }
            set { _procesos.strT7 = value; base.OnPropertyChanged("strT7"); }
        }

        public string strT8
        {
            get { return _procesos.strT8; }
            set { _procesos.strT8 = value; base.OnPropertyChanged("strT8"); }
        }

        public string strT9
        {
            get { return _procesos.strT9; }
            set { _procesos.strT9 = value; base.OnPropertyChanged("strT9"); }
        }

        public string strT10
        {
            get { return _procesos.strT10; }
            set { _procesos.strT10 = value; base.OnPropertyChanged("strT10"); }
        }

        public string strDigita
        {
            get { return _procesos.strDigita; }
            set { _procesos.strDigita = value; base.OnPropertyChanged("strDigita"); }
        }

        public string strT1A
        {
            get { return _procesos.strT1A; }
            set { _procesos.strT1A = value; base.OnPropertyChanged("strT1A"); }
        }

        public string strT2A
        {
            get { return _procesos.strT2A; }
            set { _procesos.strT2A = value; base.OnPropertyChanged("strT2A"); }
        }

        public string strT3A
        {
            get { return _procesos.strT3A; }
            set { _procesos.strT3A = value; base.OnPropertyChanged("strT3A"); }
        }

        public string strT4A
        {
            get { return _procesos.strT4A; }
            set { _procesos.strT4A = value; base.OnPropertyChanged("strT4A"); }
        }

        public string strT5A
        {
            get { return _procesos.strT5A; }
            set { _procesos.strT5A = value; base.OnPropertyChanged("strT5A"); }
        }

        public string strT6A
        {
            get { return _procesos.strT6A; }
            set { _procesos.strT6A = value; base.OnPropertyChanged("strT6A"); }
        }

        public string strT7A
        {
            get { return _procesos.strT7A; }
            set { _procesos.strT7A = value; base.OnPropertyChanged("strT7A"); }
        }

        public string strT8A
        {
            get { return _procesos.strT8A; }
            set { _procesos.strT8A = value; base.OnPropertyChanged("strT8A"); }
        }

        public string strT9A
        {
            get { return _procesos.strT9A; }
            set { _procesos.strT9A = value; base.OnPropertyChanged("strT9A"); }
        }

        public string strT10A
        {
            get { return _procesos.strT10A; }
            set { _procesos.strT10A = value; base.OnPropertyChanged("strT10A"); }
        }

        public Boolean logT1
        {
            get { return _procesos.logT1; }
            set { _procesos.logT1 = value; base.OnPropertyChanged("logT1"); }
        }

        public Boolean logT2
        {
            get { return _procesos.logT2; }
            set { _procesos.logT2 = value; base.OnPropertyChanged("logT2"); }
        }

        public Boolean logT3
        {
            get { return _procesos.logT3; }
            set { _procesos.logT3 = value; base.OnPropertyChanged("logT3"); }
        }

        public Boolean logT4
        {
            get { return _procesos.logT4; }
            set { _procesos.logT4 = value; base.OnPropertyChanged("logT4"); }
        }

        public Boolean logT5
        {
            get { return _procesos.logT5; }
            set { _procesos.logT5 = value; base.OnPropertyChanged("logT5"); }
        }

        public Boolean logT6
        {
            get { return _procesos.logT6; }
            set { _procesos.logT6 = value; base.OnPropertyChanged("logT6"); }
        }

        public Boolean logT7
        {
            get { return _procesos.logT7; }
            set { _procesos.logT7 = value; base.OnPropertyChanged("logT7"); }
        }

        public Boolean logT8
        {
            get { return _procesos.logT8; }
            set { _procesos.logT8 = value; base.OnPropertyChanged("logT8"); }
        }

        public Boolean logT9
        {
            get { return _procesos.logT9; }
            set { _procesos.logT9 = value; base.OnPropertyChanged("logT9"); }
        }

        public Boolean logT10
        {
            get { return _procesos.logT10; }
            set { _procesos.logT10 = value; base.OnPropertyChanged("logT10"); }
        }

        public Boolean logT1A
        {
            get { return _procesos.logT1A; }
            set { _procesos.logT1A = value; base.OnPropertyChanged("logT1A"); }
        }

        public Boolean logT2A
        {
            get { return _procesos.logT2A; }
            set { _procesos.logT2A = value; base.OnPropertyChanged("logT2A"); }
        }

        public Boolean logT3A
        {
            get { return _procesos.logT3A; }
            set { _procesos.logT3A = value; base.OnPropertyChanged("logT3A"); }
        }

        public Boolean logT4A
        {
            get { return _procesos.logT4A; }
            set { _procesos.logT4A = value; base.OnPropertyChanged("logT4A"); }
        }

        public Boolean logT5A
        {
            get { return _procesos.logT5A; }
            set { _procesos.logT5A = value; base.OnPropertyChanged("logT5A"); }
        }

        public Boolean logT6A
        {
            get { return _procesos.logT6A; }
            set { _procesos.logT6A = value; base.OnPropertyChanged("logT6A"); }
        }

        public Boolean logT7A
        {
            get { return _procesos.logT7A; }
            set { _procesos.logT7A = value; base.OnPropertyChanged("logT7A"); }
        }

        public Boolean logT8A
        {
            get { return _procesos.logT8A; }
            set { _procesos.logT8A = value; base.OnPropertyChanged("logT8A"); }
        }

        public Boolean logT9A
        {
            get { return _procesos.logT9A; }
            set { _procesos.logT9A = value; base.OnPropertyChanged("logT9A"); }
        }

        public Boolean logT10A
        {
            get { return _procesos.logT10A; }
            set { _procesos.logT10A = value; base.OnPropertyChanged("logT10A"); }
        }

        #endregion

        #region Metodos

        public MProcesosConcluidos.procesosConcluidos getProcesos()
        {
            return _procesos;
        }

        public delegate string ValidarProceso(string strLinea);

        #endregion

        #region IDataErrorInfo Members

        string IDataErrorInfo.Error { get { return null; } }

        string IDataErrorInfo.this[string propertyName]
        {
            get { return this.GetValidationError(propertyName); }
        }

        #endregion

        #region Validation

        /// <summary>
        /// Returns true if this object has no validation errors.
        /// </summary>
        /// 

        public bool IsValid
        {
            get
            {
                foreach (string property in ValidatedProperties)
                    if (GetValidationError(property) != null)
                        return false;

                return true;
            }
        }

        static readonly string[] ValidatedProperties = 
                    { 
                        "logReportar",
                        "strT1",
                        "strT2",
                        "strT3",
                        "strT4",
                        "strT5",
                        "strT6",
                        "strT7",
                        "strT8",
                        "strT9",
                        "strT10"
                    };

        string GetValidationError(string propertyName)
        {
            string error = null;

            if (Array.IndexOf(ValidatedProperties, propertyName) < 0)
                return null;

            //&& CODCPT_NVP.Length==3
            switch (propertyName)
            {
                case "logReportar":
                    error = this.ValidateReportar();
                    break;
                case "strT1":
                    error = this.ValidateT1();
                    break;
                case "strT2":
                    error = this.ValidateT2();
                    break;
                case "strT3":
                    error = this.ValidateT3();
                    break;
                case "strT4":
                    error = this.ValidateT4();
                    break;
                case "strT5":
                    error = this.ValidateT5();
                    break;
                case "strT6":
                    error = this.ValidateT6();
                    break;
                case "strT7":
                    error = this.ValidateT7();
                    break;
                case "strT8":
                    error = this.ValidateT8();
                    break;
                case "strT9":
                    error = this.ValidateT9();
                    break;
                case "strT10":
                    error = this.ValidateT10();
                    break;
                default:
                    Debug.Fail("Unexpected property being validated on Customer: " + propertyName);
                    break;
            }
            return error;
        }

        string ValidateReportar()
        {
            try
            {
                if (strDigita == "1" && logReportar == false)
                {
                    return null;
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return null;
        }

        string ValidateT1()
        {
            try
            {
                if (strT1A != null)
                {
                    if (strDigita == "1" && Convert.ToInt32(strT1A) > 0)
                    {
                        if (Convert.ToInt32(strT1) > Convert.ToInt32(strT1A))
                            return "Cantidad errada. La cantidad máxima a reportar es: " + strT1A;
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return null;
        }

        string ValidateT2()
        {
            try
            {
                if (strT2A != null)
                {
                    if (strT2A.ToString().Trim().Length > 0)
                    {
                        if (strDigita == "1" && Convert.ToInt32(strT2A) > 0)
                        {
                            if (Convert.ToInt32(strT2) > Convert.ToInt32(strT2A))
                                return "Cantidad errada. La cantidad máxima a reportar es: " + strT2A;
                        }
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return null;
        }

        string ValidateT3()
        {
            try
            {
                if (strT3A != null)
                {
                    if (strT3A.ToString().Trim().Length > 0)
                    {
                        if (strDigita == "1" && Convert.ToInt32(strT3A) > 0)
                        {
                            if (Convert.ToInt32(strT3) > Convert.ToInt32(strT3A))
                                return "Cantidad errada. La cantidad máxima a reportar es: " + strT3A;
                        }
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return null;
        }

        string ValidateT4()
        {
            try
            {
                if (strT4A != null)
                {
                    if (strT4A.ToString().Trim().Length > 0)
                    {
                        if (strDigita == "1" && Convert.ToInt32(strT4A) > 0)
                        {
                            if (Convert.ToInt32(strT4) > Convert.ToInt32(strT4A))
                                return "Cantidad errada. La cantidad máxima a reportar es: " + strT4A;
                        }
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return null;
        }

        string ValidateT5()
        {
            try
            {
                if (strT5A != null)
                {
                    if (strT5A.ToString().Trim().Length > 0)
                    {
                        if (strDigita == "1" && Convert.ToInt32(strT5A) > 0)
                        {
                            if (Convert.ToInt32(strT5) > Convert.ToInt32(strT5A))
                                return "Cantidad errada. La cantidad máxima a reportar es: " + strT5A;
                        }
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return null;
        }

        string ValidateT6()
        {
            try
            {
                if (strT6A != null)
                {
                    if (strT6A.ToString().Trim().Length > 0)
                    {
                        if (strDigita == "1" && Convert.ToInt32(strT6A) > 0)
                        {
                            if (Convert.ToInt32(strT6) > Convert.ToInt32(strT6A))
                                return "Cantidad errada. La cantidad máxima a reportar es: " + strT6A;
                        }
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return null;
        }

        string ValidateT7()
        {
            try
            {
                if (strT7A != null)
                {
                    if (strT7A.ToString().Trim().Length > 0)
                    {
                        if (strDigita == "1" && Convert.ToInt32(strT7A) > 0)
                        {
                            if (Convert.ToInt32(strT7) > Convert.ToInt32(strT7A))
                                return "Cantidad errada. La cantidad máxima a reportar es: " + strT7A;
                        }
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return null;
        }

        string ValidateT8()
        {
            try
            {
                if (strT8A != null)
                {
                    if (strT8A.ToString().Trim().Length > 0)
                    {
                        if (strDigita == "1" && Convert.ToInt32(strT8A) > 0)
                        {
                            if (Convert.ToInt32(strT8) > Convert.ToInt32(strT8A))
                                return "Cantidad errada. La cantidad máxima a reportar es: " + strT8A;
                        }
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return null;
        }

        string ValidateT9()
        {
            try
            {
                if (strT9A != null)
                {
                    if (strT9A.ToString().Trim().Length > 0)
                    {
                        if (strDigita == "1" && Convert.ToInt32(strT9A) > 0)
                        {
                            if (Convert.ToInt32(strT9) > Convert.ToInt32(strT9A))
                                return "Cantidad errada. La cantidad máxima a reportar es: " + strT9A;
                        }
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return null;
        }

        string ValidateT10()
        {
            try
            {
                if (strT10A != null)
                {
                    if (strT9A.ToString().Trim().Length > 0)
                    {
                        if (strDigita == "1" && Convert.ToInt32(strT10A) > 0)
                        {
                            if (Convert.ToInt32(strT10) > Convert.ToInt32(strT10A))
                                return "Cantidad errada. La cantidad máxima a reportar es: " + strT10A;
                        }
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return null;
        }


        #endregion
    }
    #endregion
}
